package com.br.ufcc.teste;

import static org.junit.Assert.*;


import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.br.ufcc.model.Usuario;
import com.br.ufcc.util.HibernateUtil;

public class UsuarioTeste {
	private static Session sessao;
	private static Transaction transacao;
	
	@BeforeClass
	public static void abreConexao() {
		sessao = HibernateUtil.getSession().getCurrentSession();
		transacao = sessao.beginTransaction();
	}
	
	@AfterClass
	public static void fechaConexao() {
		
		try {
			transacao.commit();
		} catch (Throwable e) {
			System.out.println("deu problema no commit: " + e.getMessage());
		}finally{
			try {
				if(sessao.isOpen()){
					sessao.close();
				}
			} catch (Exception e2) {
				System.out.println("Deu erro no fechamento da sessao" + e2.getMessage());
			}
		}
		try {
			
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	
	@Before
	public void setUp(){
		Usuario u1 = new Usuario("Wellington", "wellington@gmail", new Date());
		Usuario u2 = new Usuario("Paula", "paula@gmail", new Date());
		Usuario u3 = new Usuario("Ramon", "ramon@gmail", new Date());
		Usuario u4 = new Usuario("Leticia", "leticia@gmail", new Date());
		Usuario u5 = new Usuario("Rodrigo", "rodrigo@gmail", new Date());
		Usuario u6 = new Usuario("Eu", "eu@gmail", new Date());
		
		sessao.save(u1);
		sessao.save(u2);
		sessao.save(u3);
		sessao.save(u4);
		sessao.save(u5);
		sessao.save(u6);
	}
	
	@Test
	public void salvarUsuarioTeste() {
		
		String sql = "from Usuario u where u.nome like :nome";
		Query consulta = sessao.createQuery(sql);
		consulta.setString("nome", "%Eu%");
		System.out.println("oi");
		Usuario usuarioBuscado = (Usuario)consulta.uniqueResult();
		
		assertEquals("Eu", usuarioBuscado.getNome());
		
	}

}
